--[[
NetFlow - OpenWRT 网络流量管理系统
系统设置模型

本文件定义了系统设置页面的配置模型，
提供基本系统参数和功能开关的配置。
]]--

local m, s, o

-- 创建配置映射
m = Map("netflow", "NetFlow 系统设置",
    "配置 NetFlow 网络流量管理系统的基本设置。")

-- 创建常规设置部分
s = m:section(TypedSection, "general", "常规设置")
s.anonymous = true

-- 启用/禁用系统
o = s:option(Flag, "enabled", "启用系统")
o.rmempty = false
o.default = "1"
o.description = "启用或禁用 NetFlow 系统"

-- 启用流量分类
o = s:option(Flag, "enable_classification", "启用流量分类")
o.rmempty = false
o.default = "1"
o.description = "启用或禁用流量分类功能"

-- 启用优先级调度
o = s:option(Flag, "enable_priority_scheduling", "启用优先级调度")
o.rmempty = false
o.default = "1"
o.description = "启用或禁用优先级调度功能"

-- 启用动态调整
o = s:option(Flag, "enable_dynamic_adjustment", "启用动态调整")
o.rmempty = false
o.default = "1"
o.description = "启用或禁用动态带宽调整功能"

-- 网络接口
o = s:option(ListValue, "interface", "网络接口")
for k, v in pairs(luci.sys.net.devices()) do
    o:value(v)
end
o.default = "eth0"
o.description = "选择要管理的网络接口"

-- 总带宽
o = s:option(Value, "bandwidth", "总带宽 (kbps)")
o.datatype = "uinteger"
o.default = "100000"
o.description = "设置接口的总带宽（单位：kbps，1Mbps = 1000kbps）"

-- 日志级别
o = s:option(ListValue, "log_level", "日志级别")
o:value("0", "紧急")
o:value("1", "警报")
o:value("2", "严重")
o:value("3", "错误")
o:value("4", "警告")
o:value("5", "通知")
o:value("6", "信息")
o:value("7", "调试")
o.default = "6"
o.description = "设置系统日志级别"

-- 创建高级设置部分
s = m:section(TypedSection, "advanced", "高级设置")
s.anonymous = true

-- 自定义分类模型路径
o = s:option(Value, "model_path", "分类模型路径")
o.default = "/etc/netflow/model.bin"
o.description = "设置流量分类模型的路径"

-- 缓存大小
o = s:option(Value, "cache_size", "分类缓存大小")
o.datatype = "uinteger"
o.default = "1000"
o.description = "设置流量分类缓存的最大项数"

-- 流表大小
o = s:option(Value, "flow_table_size", "流表大小")
o.datatype = "uinteger"
o.default = "2048"
o.description = "设置流表的最大项数"

-- 流过期时间
o = s:option(Value, "flow_expiry_time", "流过期时间 (秒)")
o.datatype = "uinteger"
o.default = "300"
o.description = "设置流的过期时间，过期后将被清理"

-- 统计更新间隔
o = s:option(Value, "stats_interval", "统计更新间隔 (秒)")
o.datatype = "uinteger"
o.default = "5"
o.description = "设置统计信息的更新间隔"

return m
